// CodeContracts
// 
// Copyright (c) Microsoft Corporation
// 
// All rights reserved. 
// 
// MIT License
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

using System;
using System.ComponentModel;
using System.Data.Common;
using System.Runtime.Serialization;
using System.Diagnostics.Contracts;

namespace System.Data.SqlClient
{
  // Summary:
  //     The exception that is thrown when SQL Server returns a warning or error.
  //     This class cannot be inherited.
  //[Serializable]
  public sealed class SqlException //: DbException
  {
    // Summary:
    //     Gets the severity level of the error returned from the .NET Framework Data
    //     Provider for SQL Server.
    //
    // Returns:
    //     A value from 1 to 25 that indicates the severity level of the error.
    public byte Class
    {
      get
      {
        Contract.Ensures(Contract.Result<byte>() >= 1);
        Contract.Ensures(Contract.Result<byte>() <= 25);

        return default(byte);
      }
    }
    //
    // Summary:
    //     Gets a collection of one or more System.Data.SqlClient.SqlError objects that
    //     give detailed information about exceptions generated by the .NET Framework
    //     Data Provider for SQL Server.
    //
    // Returns:
    //     The collected instances of the System.Data.SqlClient.SqlError class.
    //[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public SqlErrorCollection Errors
    {
      get
      {
        Contract.Ensures(Contract.Result<SqlErrorCollection>() != null);

        return default(SqlErrorCollection);
      }
    }
    //
    // Summary:
    //     Gets the line number within the Transact-SQL command batch or stored procedure
    //     that generated the error.
    //
    // Returns:
    //     The line number within the Transact-SQL command batch or stored procedure
    //     that generated the error.
    public int LineNumber 
    {
      get
      {
        Contract.Ensures(Contract.Result<int>() >= 0);

        return default(int);
      }
    }
    //
    // Summary:
    //     Gets a number that identifies the type of error.
    //
    // Returns:
    //     The number that identifies the type of error.
    //public int Number { get; }
    //
    // Summary:
    //     Gets the name of the stored procedure or remote procedure call (RPC) that
    //     generated the error.
    //
    // Returns:
    //     The name of the stored procedure or RPC.
    //public string Procedure { get; }
    //
    // Summary:
    //     Gets the name of the computer that is running an instance of SQL Server that
    //     generated the error.
    //
    // Returns:
    //     The name of the computer running an instance of SQL Server.
    //public string Server { get; }
    //
    // Summary:
    //     Gets the name of the provider that generated the error.
    //
    // Returns:
    //     The name of the provider that generated the error.
    //public override string Source { get; }
    //
    // Summary:
    //     Gets a numeric error code from SQL Server that represents an error, warning
    //     or "no data found" message. For more information about how to decode these
    //     values, see SQL Server Books Online.
    //
    // Returns:
    //     The number representing the error code.
    //public byte State { get; }

    // Summary:
    //     Sets the System.Runtime.Serialization.SerializationInfo with information
    //     about the exception.
    //
    // Parameters:
    //   si:
    //     The System.Runtime.Serialization.SerializationInfo that holds the serialized
    //     object data about the exception being thrown.
    //
    //   context:
    //     The System.Runtime.Serialization.StreamingContext that contains contextual
    //     information about the source or destination.
    //
    // Exceptions:
    //   System.ArgumentNullException:
    //     The si parameter is a null reference (Nothing in Visual Basic).
    //public override void GetObjectData(SerializationInfo si, StreamingContext context);
  }
}

namespace System.Data.SqlClient
{
  // Summary:
  //     Collects all errors generated by the .NET Framework Data Provider for SQL
  //     Server. This class cannot be inherited.
  //[Serializable]
  //[ListBindable(false)]
  public sealed class SqlErrorCollection //: ICollection, IEnumerable
  {
    // Summary:
    //     Gets the number of errors in the collection.
    //
    // Returns:
    //     The total number of errors in the collection.
    //public int Count { get; }

    // Summary:
    //     Gets the error at the specified index.
    //
    // Parameters:
    //   index:
    //     The zero-based index of the error to retrieve.
    //
    // Returns:
    //     A System.Data.SqlClient.SqlError that contains the error at the specified
    //     index.
    //
    // Exceptions:
    //   System.IndexOutOfRangeException:
    //     Index parameter is outside array bounds.
    //public SqlError this[int index] { get; }

    // Summary:
    //     Copies the elements of the System.Data.SqlClient.SqlErrorCollection collection
    //     into an System.Array, starting at the specified index.
    //
    // Parameters:
    //   array:
    //     The System.Array to copy elements into.
    //
    //   index:
    //     The index from which to start copying into the array parameter.
    //
    // Exceptions:
    //   System.ArgumentException:
    //     The sum of index and the number of elements in the System.Data.SqlClient.SqlErrorCollection
    //     collection is greater than the System.Array.Length of the System.Array.
    //
    //   System.ArgumentNullException:
    //     The array is null.
    //
    //   System.ArgumentOutOfRangeException:
    //     The index is not valid for array.
    //public void CopyTo(Array array, int index);
    //
    // Summary:
    //     Copies the elements of the System.Data.SqlClient.SqlErrorCollection collection
    //     into a System.Data.SqlClient.SqlErrorCollection, starting at the specified
    //     index.
    //
    // Parameters:
    //   array:
    //     The System.Data.SqlClient.SqlErrorCollection to copy the elements into.
    //
    //   index:
    //     The index from which to start copying into the array parameter.
    //
    // Exceptions:
    //   System.ArgumentException:
    //     The sum of index and the number of elements in the System.Data.SqlClient.SqlErrorCollection
    //     collection is greater than the length of the System.Data.SqlClient.SqlErrorCollection.
    //
    //   System.ArgumentNullException:
    //     The array is null.
    //
    //   System.ArgumentOutOfRangeException:
    //     The index is not valid for array.
    //public void CopyTo(SqlError[] array, int index);
    //
    // Summary:
    //     Returns an enumerator that iterates through the System.Data.SqlClient.SqlErrorCollection.
    //
    // Returns:
    //     An System.Collections.IEnumerator for the System.Data.SqlClient.SqlErrorCollection.
    //public IEnumerator GetEnumerator();
  }
}